package com.sheepone.util.structure.tree.binary;

import java.util.List;

/**
 * @author Miss.杨
 * @description
 * @since 2024/5/7:8:43
 */
public interface BinaryTree<E> {
    /**
     * 层序遍历
     *
     * @return 每层的节点
     */
    List<List<E>> layerTransfer();

    /**
     * 前序遍历
     *
     * @return 遍历结果
     */
    List<E> preOrderTransfer();

    /**
     * 中序遍历
     *
     * @return 遍历结果
     */
    List<E> inOrderTransfer();

    /**
     * 后序遍历
     *
     * @return 遍历结果
     */
    List<E> postOrderTransfer();

    /**
     * 是否对称
     *
     * @return 是否对称
     */

    boolean isSymmetrical();

    /**
     * 层数
     *
     * @return 层数
     */

    int layers();

    /**
     * 最大深度
     *
     * @return 最大深度
     */
    int maxDepth();

    /**
     * 最小深度
     *
     * @return 最小深度
     */
    int minDepth();

    /**
     * 翻转二叉树
     *
     * @return 翻转后的二叉树
     */
    default BinaryTree<E> reverse() {
        throw new UnsupportedOperationException();
    }

}
